<?php

/*
 * 单例模式
 * "三私一公",一个私有的构造函数,防止外部实例化,一个私有的克隆函数,防止外部克隆对象,一个私有的静态属性,用来存储自身的实例化,一个公有的方法,用来外部获取该类的实例化对象
 * 构造函数与克隆函数前加final关键字,可以防止继承该类的子类将构造函数和克隆函数声明为public
 * 
 */

namespace IMooc;

class Database {

    private static $_db = null;

    final private function __construct()
    {
        
    }

    final private function __clone()
    {
        
    }

    public static function getInstance()
    {
        if (is_null(self::$_db))
        {
            return self::$_db = new self;
        }

        return self::$_db;
    }

    /*
     * 连贯操作的核心:每个方法中最后需要return $this
     */

    public function where()
    {
        return $this;
    }

    public function order()
    {
        return $this;
    }

    public function limit()
    {
        return $this;
    }

}
